1. Field of the Invention
The invention relates to multitasking computing systems and methods adapted for reconfigurable computing platforms as well as reconfigurable hardware devices and software, such as operating systems, middleware, or drivers adapted for supporting and executing the methods.
2. Description of the Related Technology
Nowadays a lot of applications, like multimedia applications are emerging on portable appliances. These applications require both the flexibility of upgradeable devices (typically software based) and a powerful computing engine (typically hardware). This application domain is therefore a very good target for reconfigurable computing.
Execution of applications on a software based computing platform is often supported by an operating system (OS), that abstracts the hardware, by providing a clear interface to the facilities of the platform. Operating systems for a general purpose programmable processor are known. The OS can also provide an environment where several tasks can run concurrently, with a minimal of interference between them, but with support for safe data sharing. In that context, the OS should manage the available hardware resources in a consistent, efficient and fair way. Operating systems for combinations of general purpose programmable processors, enabling such multitasking, are also known. Many contemporary platforms have a general purpose OS that abstracts the hardware. These operating systems, however, do not provide any support for incorporating hard real time properties into tasks.
Running of applications on a dedicated hardware device can involve writing a device driver, allowing applications to communicate with this device. Such a-device driver-only approach makes an application designer responsible for the execution of the application, instead of the OS. Such a device driver is device and application specific.
In case multiple resources are available on a computing platform, a scheduling problem can be defined as follows. Since the computing resources are limited: how to decide what task to run and where, in case there are multiple processors or processing engines available. These decisions can be based on parameters like task priority, processor affinity. In case of pre-emptive scheduling: how can the context of the current task be saved, in order for this task to continue whenever additional computing resources are assigned to it. The existing work in the area of runtime reconfigurable systems concentrates on managing the time evolution of applications that exclusively own the reconfigurable matrix for a short while. A lot of work has already been done on describing general concepts about scheduling tasks on heterogeneous multi-processor systems, as well as specific scheduling techniques.
Multi-processor architectures include interconnection networks. Various interconnection networks are known in the multicomputing world and System-on-Chip. A packet-switched network for instance exists in different flavors, both for the topology (k-ary n-cubes, hypercubes, butterflies, crossbars) and for the type of routing (wormhole, virtual cut-through, mad postman switching). Such a concept has been introduced in SoC, allowing to route packets instead of wires.